#!/usr/bin/python3
# -*- coding: utf8 -*-

import datetime
import jinja2
import json
import os
import shutil
import sys
import time

def cpt(t):
    import json
    print(json.dumps(t,encoding="gbk",ensure_ascii=False,indent=4))

rd={}   #保存读入用的数据，转换成模板需要的格式

class main:
    def __init__(self):
        self.main()
    def main(self):
        if len(sys.argv)!=4:
            print("需要输入3个参数：tajk_data.c文件名 field.txt文件名 filefield.txt文件名")
            return
        c文件名,field文件名,filefield文件名=sys.argv[-3:]
        self.读入field(field文件名)
        self.读入filefield(filefield文件名)
        t=open("tajk_data.tpl","r",encoding="utf8").read()
        tmpl=jinja2.Template(t)
        cf=open(c文件名,"w",encoding="utf8")
        cf.write(tmpl.render(rd))
        cf.close()
    def convver(self,ver):
        return {"2.1":21,"2.2":22}[ver]
    def 读入field(self,field文件名):  #处理 字段数据字典 即 tajk_field 数据
        rd["field"]=[]
        self.field={}
        self.字段字典={}
        xh=0
        for l in open(field文件名,"r",encoding="gbk").readlines():
            版本,字段id,字段名,字段类型,长度,小数,说明=l.split("|")[:7]
            self.field["%s|%s" %(版本,字段id)]=xh
            xh=xh+1
            if 小数=="":小数="0"
            self.字段字典[f"{版本}|{字段id}"]=[字段名,字段类型,长度,小数]
            rd["field"].append({"ver":self.convver(版本),"id":字段id,"name":字段名,"type":字段类型,"size":长度,"decpos":小数,"desc":说明})
    def 读入filefield(self,filefield文件名):  #处理 各接口文件字段列表 即 tajk_datafile_field 数据
        rd["filefield"]=[]
        rd["文件字段"]=[]
        for l in open(filefield文件名,"r",encoding="gbk").readlines():
            d=l.split("|")
            版本,文件类型,字段id=d[:3]
            字段名,字段类型,长度,小数=self.字段字典[f"{版本}|{字段id}"]
            rd["文件字段"].append({"版本":self.convver(版本),"文件类型":文件类型,})
            rd["filefield"].append({"ver":self.convver(d[0]),"filemodel":d[1],"tfid":self.field["%s|%s" %(d[0],d[2])]})

main()
